package com.galaxy.commom.base.holder;

import com.galaxy.commom.base.enums.DataSourceEnum;
import org.apache.commons.lang3.StringUtils;

/**
 * 数据源DbContextHolder
 * @author caijinbang
 * @date 2018/9/8 23:43
 */
public class DbContextHolder {
  private static final ThreadLocal<String> CONTEXTHOLDER = new ThreadLocal<String>();

  /**
   * 设置数据源
   * @param dataSourceEnum 数据源枚举
   */
  public static void setDbType(DataSourceEnum dataSourceEnum) {
    CONTEXTHOLDER.set(dataSourceEnum.getName());
  }

  /**
   * 取得当前数据源
   * @return 当前数据源
   */
  public static String getDbType() {
    String dataSource = CONTEXTHOLDER.get();
    // 如果没有指定数据源，使用默认数据源
    if (StringUtils.isEmpty(dataSource)) {
      DbContextHolder.setDbType(DataSourceEnum.MASTER);
    }
    return CONTEXTHOLDER.get();
  }

  /**
   * 清除上下文数据
   */
  public static void clearDbType() {
    CONTEXTHOLDER.remove();
  }
}
